import socket
from socket import socket as Socket

# 实现客户端和服务器端的即使聊天
# 客户端 udp2
# 服务端 udp1

# 创建一个UDP的socket对象
server_socket = Socket(socket.AF_INET, socket.SOCK_DGRAM)

# server_socket.bind(('192.168.115.215', 6666))
# IP为空时，表示绑定到所有的IP地址上
# server_socket.bind(('', 9999))
server_socket.bind(('', 6666))


while True:
    # msg 是收到的数据，addr是源地址和端口号  客户端
    # 设置一次性接收最大多少的数据，1024代表1kb的数据
    # recvfrom 是阻塞函数，如果未收到数据包，那么程序就等待
    msg, addr = server_socket.recvfrom(1024)
    if msg.decode('utf8') == 'quit':   # 表示终止聊天
        print('客户端退出聊天')
        break

    print(f'来自客户端IP：{addr[0]},端口号：{addr[1]} 的消息：{msg.decode("utf-8")}')

    # 服务端也可以发送数据到客户端
    send_msg = input('服务端>> ')
    # sendto 发送的数据不能是空字符串，只能是字节数据，字符串的 encode函数
    server_socket.sendto(send_msg.encode('utf8'), addr)


# 最后关闭socket
server_socket.close()